%%% overview.tex --- 

%% Author: <lukehuang.ca@me.com>
%% Version: $Id: zfs_overview.tex,v 0.0 2013/03/26 14:31:35 luke Exp$

\section{概览}
\subsection{整体架构}
如图\,\ref{fig:arch}\,所示，
ZFS可以理解为由vdev节点构成的一棵树。
可写入的介质位于叶端，
又称为物理vdev，
负责实际数据的存取；
中间节点又称为逻辑vdev，
用于表达ZFS所有功能的逻辑。

\begin{figure}[!b]
  \centering
  \includegraphics[width=\textwidth]{ov.pdf}
  \caption{ZFS概览}\label{fig:arch}
\end{figure}

\subsection{模块划分}
从设计实现的角度上看，
ZFS可以划分为以下列出的7个相对独立模块，
模块的简写名称贯穿ZFS的源代码%
以及介绍ZFS内部实现的文档。
\begin{description}[labelindent=\parindent,%
                    leftmargin=4em,%
                    font=\normalfont\itshape]
  \item [SPA] \hfill \\
    \textit{Storage Pool Allocator}，
    这一层负责pool一级的操作，
    如创建，销毁，及查询等。
  \item [DMU] \hfill \\
    \textit{Data Management Layer}，
    这一层将数据块组织对象，
    常见的对象类型如文件，目录等。
    这一层还负责将对象组织为对象集，
    常见的对象集如文件系统，文件系统快照等。
  \item [DSL] \hfill \\
    \textit{Dataset and Snapshot Layer}，
    这一层管理对象集的属性以及名对象集之间的关系。
  \item [ZAP] \hfill \\
    \textit{ZFS Attribute Processor}
  \item [ZPL] \hfill \\
    \textit{ZFS Posix Layer}，
    这一层负责将ZFS对象以POSIX定义的方式呈现，
    譬如POSIX open、read、write等。
  \item [ZIL] \hfill \\
    \textit{ZFS Intent Log}
  \item [ZVOL] \hfill \\
    \textit{ZFS Volume}
\end{description}
